/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejb.negocio;

import ejb.dao.ClienteDAOLocal;
import ejb.dao.UsuarioDAOLocal;
import entidades.Cliente;
import entidades.TipoUsuario;
import entidades.Usuario;
import java.util.Calendar;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author ribadas
 */
@Stateless
public class GestorUsuariosService implements GestorUsuariosServiceRemote, GestorUsuariosServiceLocal {

    @EJB
    UsuarioDAOLocal usuarioFacade;
    @EJB
    ClienteDAOLocal clienteFacade;

    public boolean autenticarUsuario(String login, String passwordPlano) {
        Usuario usuario;
        boolean resultado = false;

        usuario = usuarioFacade.buscarPorLogin(login);
        if (usuario != null) {
            if (usuario.getPassword().equals(passwordPlano)) {
                resultado = true;
            }
        }

        return resultado;
    }

    public Cliente recuperarDatosCliente(String login) {
        return clienteFacade.buscarPorLogin(login);
    }

    public Cliente crearNuevoCliente(String login, String password, Cliente datosNuevoCliente) {
        // Crear el usuario (de tipo CLIENTE)
        Usuario nuevoUsuario = usuarioFacade.crear(new Usuario(login, password, TipoUsuario.CLIENTE, Calendar.getInstance().getTime()));
        // Enlazarlo al cliente
        datosNuevoCliente.setUsuario(nuevoUsuario);
        // Crear el cliente
        return clienteFacade.crear(datosNuevoCliente);
    }

    public Cliente actualizarDatosCliente(Cliente datosCliente) {
        return clienteFacade.actualizar(datosCliente);
    }

    public Usuario actualizarPassword(long idUsuario, String password) {
        Usuario usuario = usuarioFacade.buscarPorId(idUsuario);
        usuario.setPassword(password);
        return usuarioFacade.actualizar(usuario);
    }

    public Usuario actualizarUltimoAcceso(long idUsuario) {
        Usuario usuario = usuarioFacade.buscarPorId(idUsuario);
        usuario.setUltimoAcceso(Calendar.getInstance().getTime());  // Tiempo actual
        return usuarioFacade.actualizar(usuario);
    }

    public boolean existeUsuario(String login) {
        return (usuarioFacade.buscarPorLogin(login) != null);
    }
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
}
